package com.ads.tpgrupo4.server.service.comparativaDePrecios;

import java.math.BigDecimal;
import java.util.List;

import com.ads.tpgrupo4.dtos.ItemListaComparativaDePreciosDTO;
import com.ads.tpgrupo4.dtos.ListaComparativaDePreciosSearchDTO;
import com.ads.tpgrupo4.server.config.Config;
import com.ads.tpgrupo4.server.remote.PersistenceService;
import com.ads.tpgrupo4.server.service.listaDePrecios.NuevaListaDePreciosServiceException;
import com.ads.tpgrupo4.server.utils.Precios;

public class ComparativaDePreciosService {

	private static ComparativaDePreciosService instance;
	private PersistenceService persistenceService = PersistenceService.getInstance();
	
	public static ComparativaDePreciosService getInstance() {
		
		if (instance == null) {
			instance = new ComparativaDePreciosService();
		}
		
		return instance;
	}
	
	private ComparativaDePreciosService() {
	}
	
	public List<ItemListaComparativaDePreciosDTO> searchInfoComparativaDePreciosDeRodamientos(
			final ListaComparativaDePreciosSearchDTO search) {
		
		try {
			
			final List<ItemListaComparativaDePreciosDTO> itemsComparativaListaDePrecios = this.persistenceService.searchInfoComparativaDePreciosDeRodamientos(search);
		
			for (final ItemListaComparativaDePreciosDTO item : itemsComparativaListaDePrecios) {
				
				final BigDecimal precioConGanancia = Precios
						.aplicarPorcentajeDeGananciaSobrePrecio(item
								.getPrecioDeLista(), Config.getInstance()
								.getPorcentajeDeGananciaDefaultPorItem());
				item.setPrecio(String.valueOf(precioConGanancia));
			}
			
			return itemsComparativaListaDePrecios;
			
		} catch (final Exception e) {
			throw new NuevaListaDePreciosServiceException(e);
		}
	}
	
}
